package com.hzw.saas.web.app.aspect;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

import com.hzw.saas.api.property.enmus.SysDictKeyEnum;

/**
 * 使用redis进行分布式锁
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisPeriodLock {

    /**
     * redis锁 名字
     */
    String lockName() default "periodLock";

    /**
     * redis锁 key 支持spel表达式
     */
    String key() default "";

    /**
     * 过期时间数值
     */
    long expire() default 0L;

    /**
     * 从字典表获取过期时间
     * 优先级大于expire
     */
    String expireKey() default "";

    /**
     * 从字典表获取过期时间
     * 优先级大于expireKey
     */
    SysDictKeyEnum expireKeyEnum() default SysDictKeyEnum.BLANK;

    /**
     * 超时时间单位，默认: 秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    String lockMsg() default "";
}
